/*
 * Type-safe wrapper for WebGL in GWT.
 * 
 * Copyright (C) 2009 Hao Nguyen
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package gwt.g3d.client.gl2.enums;

import java.util.HashMap;
import java.util.Map;

/**
 * DataType flags.
 *
 * @author hao1300@gmail.com
 */
public enum DataType {
  BYTE(GLEnum.BYTE),
  UNSIGNED_BYTE(GLEnum.UNSIGNED_BYTE),
  SHORT(GLEnum.SHORT),
  UNSIGNED_SHORT(GLEnum.UNSIGNED_SHORT),
  INT(GLEnum.INT),
  UNSIGNED_INT(GLEnum.UNSIGNED_INT),
  FLOAT(GLEnum.FLOAT);

  private static Map<Integer, DataType> dataTypeMap;
  private final int value;

  private DataType(GLEnum glEnum) {
    this.value = glEnum.getValue();
  }
  /**
   * Gets the enum's numerical value.
   */
  public int getValue() {
    return value;
  }
  
  /**
   * Parses an integer data type to its corresponding DataType enum.
   * 
   * @param dataType
   */
  public static DataType parseDataType(int dataType) {
    if (dataTypeMap == null) {
      dataTypeMap = new HashMap<Integer, DataType>();
      for (DataType v : values()) {
        dataTypeMap.put(v.getValue(), v);
      }
    }
    return dataTypeMap.get(dataType);
  }
}
